There are a variety of circuits that require programming, i.e., some configuration or adjustment, to achieve desired results. It is known to make programmable components at the time a chip or system is fabricated. For example, field-programmable gate arrays (FPGAs) contain components that during the routing process of chip design are placed in such a way that the connections between them can be changed later, i.e., programmed, to obtain a desired circuit.
However, reconfiguring the connections between components to program a desired circuit takes a certain amount of time and thus is impractical in certain applications. For example, neural-like networks or analog signal processing networks may require more rapid adjustment at run time, i.e., during operation of the circuit, rather than at chip or system fabrication time. In such networks it may be desirable to use analog components that are rapidly changed under some form of digital control. A Digital to Analog converter (DAC) is such a circuit, particularly the multiplying kind of DAC, which multiplies a quantity by a digitally adjustable amount. One manufacturer of such multiplying DACs is Analog Devices, Inc.
Even when such an adjustment is possible at run time, the means by which such an adjustment is made to an analog quantity presents certain issues. Three such issues are 1) whether the adjustment means is inherently linear, 2) whether the adjustment means adversely affects the power dissipated by the analog element, and 3) the degree to which the adjustment increases or decreases the noise present in the circuit.
As one example, consider an “integrator” circuit 100 shown in FIG. 1, which is well known in the prior art. Such a circuit is commonly used to provide an output signal that is the integral of the input signal. A designer selects values for the resistor R1′ and the capacitor C1′ in order to select how fast the output will respond to a change in the input, known as the “time constant;” the product of the values of the resistor and the capacitor is the time constant, also known as the RC time constant.
Some known ways of adjusting the values of the components after the circuit has been constructed are illustrated in FIGS. 2 to 5. For example, it is possible to make the effective value of either the capacitor C1′ or the resistor R1′ in FIG. 1 adjustable by building it out of binary weighted values; as will be explained further below, opening and closing switches S1 to S4 in each of FIGS. 2 to 5 will adjust the effective value of capacitor C1′ or resistor R1′, respectively.
However, as will also be explained further, in these cases the values achievable are distributed linearly across the given range. While it is typical that in a given design the variation in the absolute value of a component determines the circuit performance, those of skill in the art will appreciate that a linear distribution of possible values means that the percentage of error at the low end of the range may often be greater than at the high end of the range.
For example, in circuit 200 of FIG. 2 four capacitors are used to create an adjustable capacitance to replace single capacitor C1′ of FIG. 1. The values of these four capacitors are selected relative to some nominal capacitance C, and are ½, ¼, ⅛, and 1/16 of the nominal capacitance C, respectively. Switches S1 to S4 may each be either open or closed. If a switch is open, the corresponding capacitor does not contribute to the circuit; if the switch is closed, the corresponding capacitor contributes to the effective capacitance that corresponds to capacitor C1′ in FIG. 1. If all four switches are open, the effective capacitance is zero, no current flows, and the circuit does not operate.
By opening and closing switches S1 to S4, the effective non-zero value of C1′ may range from 1/16 C to 15/16 C, with a resolution (i.e., steps in value) of 1/16 C distributed linearly across the range. These values may be represented by a control signal or code corresponding to which of the switches S1 to S4 are open or closed, and may be represented in binary form. Thus, 1/16 C is represented by a 1 (binary 0001), i.e., only switch S1 is closed, and 15/16 C is represented by a 15 (binary 1111), meaning all 4 switches are closed; a control code of 0 (binary 0000) means all 4 switches are open, and the effective capacitance is 0. (The effective impedance of capacitors in parallel is calculated in the same way as the effective capacitance, and thus the distribution of impedance values is also linear.)
Suppose a designer using the circuit of FIG. 2 wants the effective value of the capacitors to be 0.28 C. The closest that the circuit of FIG. 2 can come to this desired effective value is either 0.25 C (closing only switch S3, i.e., a code of 4 or 0100), or 0.3125 C ( 5/16 C, closing switches S3 and S1, a code of 5 or 0101). Selecting 0.25 C as the closest value to the desired value of 0.28 C results in an error of 0.03 C, or 10.7% of the desired effective value of C1 (0.03/0.28 =10.7%).
However, if the designer wants a value of 0.85 C, the two closest values achievable with the circuit of FIG. 2 are 0.8125 C (code 13, or 1101) or 0.875 C (code 14, or 1110). Selecting 0.875 C means the error from the desired value is 0.025, or 2.9% (0.025/0.85=2.9%). This is a significantly smaller error.
It is known in the art that, as in the example above, the error as a proportion of the desired value varies because the possible values are linearly distributed across the range. It is believed that all of the prior art adjustable components have this limitation.
As will be discussed further below, the prior art methods of adjusting components also have other undesirable limitations. For example, power is wasted by the adjustable components, and there is unwanted thermal noise present in the circuit.
It would be advantageous to have adjustable components that are adjustable at run time, that provide a more consistent error across the components' range(s), that reduce the power dissipated as the controlled parameter is reduced, and that reduce noise, all without adversely affecting the performance of the circuit containing them.